プライベートなEC2に一時的にSSHする3つの方法
おはようございます、加藤です。東京は気温が高くて過ごしやすいですね。
はじめに
プライベートなセグメントに一時的にSSH接続する方法をご紹介します。
下図の様な構成です。publicには色々インスタンスはあるが自分は触ることができない場合の対処方法です。
パターン1 EC2の踏み台
あるあるパターンです。自分用の踏み台を作ります。
- public_subnetにインスタンスを立てる
- インターネットからのSSH許可
- インスタンスprivateのセキュリティグループ変更
- bastionからのSSH許可
接続コマンドはこんな感じです。
ssh -oProxyCommand='ssh -W %h:%p ec2-user@ec2-13-x-x-x.ap-northeast-1.compute.amazonaws.com' ec2-user@ip-10-x-x-x.ap-northeast-1.compute.internal
作業が終了後、bastionは削除します。
インスタンスの上限数に注意する必要があります。
多段SSHについて詳細は下記のブログが参考になります。
ProxyCommandを使って踏み台(Bastion)経由で直接ssh/scpする
パターン2 EIPを割り当てる
一時的にEIPを割り当てる方法です。パブリックじゃないならパブリックにすれば良いという発想ですね。
- EIP割り当て
- インスタンスprivateに関連付け
- private_subnetのルーティング変更
- x.x.x.x/32宛をインターネットゲートウェイ
- アクセス元のパブリックIPアドレスで設定
- セキュリティグループのソースをマイIPにするか、以下のコマンドで調べることができます
curl https://checkip.amazonaws.com/
- x.x.x.x/32宛をインターネットゲートウェイ
- インスタンスbastionのセキュリティグループ変更
- インターネットからSSH許可
作業が終了後、EIPは関連付け解除・開放します。
EIPの上限数に注意する必要があります。
プライベートなサブネットという要件を一時的に破壊します。踏み台インスタンスを立てることができず、サブネット内に他にインスタンスがない場合などに使用します。
パターン3 ELB経由でSSHする
ELB経由でSSH接続します。社内で教えてもらった方法です。
- ELB(CLB)作成
- TCP 10022をインスタンスprivateの22に転送
- ELBのセキュリティグループ変更
- インターネットからTCP10022許可
- インスタンスprivateのセキュリティグループ変更
- ELBからSSH許可
作業が終了したらELBを削除します。 制限などが理由でインスタンスにもEIPにも空きが無い時におすすめです。
あとがき
ELBでSSHを聞いた時の衝撃で書きました。いざという時、この記事の事を思い出して頂き助けになれば幸いです。 結構長くなるかな?と思い書き始めましたが結果的には小ネタでした笑